﻿Imports lbGlobalcom
Public Class fRecibos
    Dim iTipoDoc As cTipoDocumento
    Dim daCli As lbGlobalcom.dsTerceroTableAdapters.TER_CLIENTESTableAdapter
    Dim daRecibi As lbGlobalcom.dsCarteraTableAdapters.CAR_RECIBOSCAJATableAdapter
    Dim daRecibiDtalle As lbGlobalcom.dsCarteraTableAdapters.CAR_RECIBOCAJADETALLEFACTURATableAdapter
    Dim daRecibiMedioPago As lbGlobalcom.dsCarteraTableAdapters.CAR_RECIBOCAJAMEDIOPAGOTableAdapter
    Dim daMovi As lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
    Dim daTipodoc As lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
    Dim daConcepto As lbGlobalcom.dsCarteraTableAdapters.CAR_CONCEPTOPAGOTableAdapter

    'Dim cCart As lbGlobalcom.cCartera
    Dim lEliminaDoc As Boolean = False
    Dim mensajeValidacion As String = ""
    Private Sub fRecibos_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            If DsCartera.CAR_RECIBOSCAJA.GetChanges IsNot Nothing Or DsCartera.CAR_RECIBOCAJADETALLEFACTURA.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(False)
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub fRecibos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
            If CustomPrincipal.EsCajero Then
                daRecibi = New lbGlobalcom.dsCarteraTableAdapters.CAR_RECIBOSCAJATableAdapter
                daRecibiDtalle = New lbGlobalcom.dsCarteraTableAdapters.CAR_RECIBOCAJADETALLEFACTURATableAdapter
                daRecibiMedioPago = New lbGlobalcom.dsCarteraTableAdapters.CAR_RECIBOCAJAMEDIOPAGOTableAdapter
                daMovi = New lbGlobalcom.dsMovimientoTableAdapters.MOV_MOVIMIENTOTableAdapter
                daTipodoc = New lbGlobalcom.dsGlobalTableAdapters.GLO_TIPODOCUMENTOTableAdapter
                daConcepto = New lbGlobalcom.dsCarteraTableAdapters.CAR_CONCEPTOPAGOTableAdapter
                lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
                DsCartera.CAR_RECIBOSCAJA.Columns("FECHA").DefaultValue = Date.Today
                DsCartera.CAR_RECIBOSCAJA.Columns("IDCAJA").DefaultValue = CustomPrincipal.IdCaja
                DsCartera.CAR_RECIBOCAJAMEDIOPAGO.Columns("VALORPAGO").DefaultValue = 0
                cGeneral.BloquearOrdenDatagrid(CAR_RECIBOCAJADETALLEFACTURADataGridView)
            Else
                MessageBox.Show("Para generar Recibos de Caja el usuario debe de ser cajero", "Error Usuario", MessageBoxButtons.OK, MessageBoxIcon.Stop)
                Me.Close()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnBuscaDocumento_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaDocumento.Click
        Try
            Dim fLDoc As New fListaTipoDocs
            fLDoc.SubClase = "REC"
            If fLDoc.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDDOCUMENTOTextBox.Text = fLDoc.idTipoDoc
                CargaTipoDoc(fLDoc.idTipoDoc)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub CargaTipoDoc(ByVal TipoDoc As String)
        Try
            iTipoDoc = New cTipoDocumento(TipoDoc)
            If iTipoDoc Is Nothing Then
                MessageBox.Show("El tipo de documento seleccionado no esta registrado", "Error en tipo de documento", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Else
                NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(TipoDoc, iTipoDoc.DocEs)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnBuscaTercero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaTercero.Click
        Try
            Dim fBT As New fBuscaTercero
            If iTipoDoc.DocEs = 10 Then
                fBT.TipoTercero = "Cliente"
                daCli = New lbGlobalcom.dsTerceroTableAdapters.TER_CLIENTESTableAdapter
            End If
            If fBT.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDTERCEROTextBox.Text = fBT.midTercero
                SUCURSALTextBox.Text = fBT.mSucursal
                'If fBT.TipoTercero = "Cliente" Then
                '    SUCURSALTextBox.Text = fBT.mSucursal
                'End If
                'ActualizaDatosTercero()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnBuscaTipoPago_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaTipoPago.Click
        Try
            Dim fltp As New fListaTipoPago
            If fltp.ShowDialog = Windows.Forms.DialogResult.OK Then
                IDTIPOPAGOTextBox.Text = fltp.idPago
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub SalvaCambios(ByVal Msj As Boolean)
        Dim valido As Boolean = True
        Try
            CAR_RECIBOSCAJABindingSource.EndEdit()
            CAR_RECIBOCAJADETALLEFACTURABindingSource.EndEdit()
            CAR_RECIBOCAJAMEDIOPAGOBindingSource.EndEdit()
            If lEliminaDoc = False Then
                valido = VerificarTotalAbonos()
            End If
            If Msj Then _
               Validate()

            If valido = True Then
                IDDOCUMENTOTextBox.Enabled = False
                NUMEROTextBox.Enabled = False
                btnBuscaDocumento.Enabled = False
                Dim cCart As New cRecibos(DsCartera, "", 0)
                cCart.AfectaFacturas()
                cCart = Nothing
                If lEliminaDoc = True Then
                    daRecibiMedioPago.Update(DsCartera.CAR_RECIBOCAJAMEDIOPAGO)
                    daRecibiDtalle.Update(DsCartera.CAR_RECIBOCAJADETALLEFACTURA)
                    daRecibi.Update(DsCartera.CAR_RECIBOSCAJA)
                    lEliminaDoc = False
                Else
                    daRecibi.Update(DsCartera.CAR_RECIBOSCAJA)
                    daRecibiDtalle.Update(DsCartera.CAR_RECIBOCAJADETALLEFACTURA)
                    daRecibiMedioPago.Update(DsCartera.CAR_RECIBOCAJAMEDIOPAGO)
                    cargarDatosFactura()
                End If


                If Msj Then _
                    MessageBox.Show("Se salvarón cambios con exito", "Salvar Cambios", MessageBoxButtons.OK, MessageBoxIcon.Information)

            Else
                MessageBox.Show("Total de Abonos no es igual al valor del recibo", "Total Abonos", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub CAR_RECIBOSCAJABindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CAR_RECIBOSCAJABindingNavigatorSaveItem.Click
        Try
            SalvaCambios(True)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub BindingNavigatorAddNewItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorAddNewItem.Click
        Try
            lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
            If DsCartera.CAR_RECIBOSCAJA.GetChanges IsNot Nothing Or DsCartera.CAR_RECIBOCAJADETALLEFACTURA.GetChanges IsNot Nothing Then
                If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                    SalvaCambios(True)
                End If
            End If
            CAR_RECIBOSCAJABindingSource.CancelEdit()
            DsCartera.CAR_RECIBOCAJAMEDIOPAGO.Rows.Clear()
            DsCartera.CAR_RECIBOCAJADETALLEFACTURA.Rows.Clear()
            DsCartera.CAR_RECIBOSCAJA.Rows.Clear()
            CAR_RECIBOSCAJABindingSource.AddNew()
            VALORRECIBOTextBox.Text = "0"
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs)
    '    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex).Cells("NITEM").Value = cGeneral.GetNumeroLinea(CAR_RECIBOCAJADETALLEFACTURADataGridView, e.RowIndex, "NITEM")
    'End Sub
    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
    '    If CAR_RECIBOCAJADETALLEFACTURADataGridView.IsCurrentCellInEditMode Then
    '        Select Case CAR_RECIBOCAJADETALLEFACTURADataGridView.Columns(e.ColumnIndex).Name
    '            Case "NUMEROFACTURA"
    '                If iTipoDoc.DocEs <> eTipoMovimi.Venta Then
    '                    'ActualizaDatosProd(e.RowIndex)
    '                End If
    '            Case "VALORPAGO"
    '                Dim cRec As cRecibos
    '                If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORFACTURA").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDCONCEPTOPAGO").Value = daConcepto.GetIdSubClase(4) Then
    '                    Dim descuento As Decimal
    '                    Dim valorAbono As Double = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value
    '                    cRec = New cRecibos(DsCartera, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOC").Value, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUM").Value)
    '                    cRec.mIdDocFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOCFACTURA").Value
    '                    cRec.mNumeroFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUMEROFACTURA").Value
    '                    CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value + 1
    '                    descuento = cRec.agregarDescuento(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORFACTURA").Value, 0)
    '                    asignaLinea(e.RowIndex)
    '                    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex + 1).Cells("VALORPAGO").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex + 1).Cells("VALORPAGO").Value - descuento
    '                ElseIf CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDCONCEPTOPAGO").Value = daConcepto.GetIdSubClase(12) Then
    '                    cRec = New cRecibos(DsCartera, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOC").Value, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUM").Value)
    '                    cRec.mIdDocFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOCFACTURA").Value
    '                    cRec.mNumeroFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUMEROFACTURA").Value
    '                    'CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value + 1
    '                    CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value = cRec.agregarDescuento(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORFACTURA").Value, 1)
    '                End If
    '                SalvaCambios(False)
    '        End Select
    '    End If
    'End Sub



    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs)
    '    Try
    '        If CAR_RECIBOCAJADETALLEFACTURADataGridView.IsCurrentCellInEditMode AndAlso e.FormattedValue IsNot Nothing AndAlso e.FormattedValue <> "" Then
    '            Select Case CAR_RECIBOCAJADETALLEFACTURADataGridView.Columns(e.ColumnIndex).Name
    '                Case "VALORPAGO"
    '                    If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDCONCEPTOPAGO").Value = daConcepto.GetIdSubClase(12) Then
    '                        MessageBox.Show("No se puede modificar el valor del descuento", "Descuento", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '                    ElseIf CDbl(e.FormattedValue) > VALORRECIBOTextBox.Text Then
    '                        MessageBox.Show("valor del abono  supera el valor del recibo", "Abono", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '                        e.Cancel = True
    '                    ElseIf e.FormattedValue > CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("SALDO").Value Then
    '                        If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value IsNot DBNull.Value Then
    '                            Dim diferencia As Decimal = e.FormattedValue - CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value
    '                            If diferencia > 0 And diferencia > CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("SALDO").Value Then
    '                                MessageBox.Show("Valor del abono es mayor que el valor de la factura", "Abono", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '                                e.Cancel = True
    '                            End If
    '                        Else
    '                            MessageBox.Show("Valor del abono es mayor que el valor del saldo", "Saldo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '                            e.Cancel = True
    '                        End If
    '                    End If
    '            End Select
    '        End If
    '    Catch ex As Exception
    '        e.Cancel = True
    '        MessageBox.Show(ex.Message)
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '    End Try
    'End Sub

    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs)
    '    MessageBox.Show(e.Exception.Message)
    'End Sub

    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs)
    '    Dim cVal As New cValidaciones(DsCartera)
    '    Try
    '        If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
    '            CAR_RECIBOSCAJABindingSource.EndEdit()
    '            mensajeValidacion = cVal.validaCartera(iTipoDoc.DocEs)
    '            If mensajeValidacion <> "" Then
    '                IDTIPOPAGOTextBox.Focus()
    '                MessageBox.Show(mensajeValidacion, "validaciones", MessageBoxButtons.OK)
    '            Else
    '                If DsCartera.CAR_RECIBOSCAJA.Rows(CAR_RECIBOSCAJABindingSource.Position).RowState = DataRowState.Added Then
    '                    NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(IDDOCUMENTOTextBox.Text, iTipoDoc.DocEs)
    '                    SalvaCambios(False)
    '                End If
    '            End If
    '        Else
    '            IDTIPOPAGOTextBox.Focus()
    '        End If
    '    Catch ex As Exception
    '        lbGlobalcom.cError.SalvaError(ex, "Samuel")
    '        MessageBox.Show(ex.Message)
    '    End Try

    '    'Try
    '    '    If VALORRECIBOTextBox.Text Is Nothing Then
    '    '        MessageBox.Show("Debe ingresar el valor del recibo", "Valor Recibo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '    '    Else
    '    '        If IDDOCUMENTOTextBox.Text <> "" And NUMEROTextBox.Text <> "" Then
    '    '            CAR_RECIBOSCAJABindingSource.EndEdit()
    '    '            cargarDatosFactura()
    '    '        End If
    '    '    End If
    '    'Catch ex As Exception
    '    '    MessageBox.Show(ex.Message)
    '    '    lbGlobalcom.cError.SalvaError(ex, "Henry")
    '    'End Try
    'End Sub

    Private Sub asignaLinea(ByVal fila As Integer)
        Try
            If fila = 0 Then
                CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(fila).Cells("NITEM").Value = 1
            Else
                CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(fila).Cells("NITEM").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(fila - 1).Cells("NITEM").Value + 1
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
        
    End Sub


    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
    '    Try
    '        If IDDOCUMENTOTextBox.Text <> "" And NUMEROTextBox.Text <> "" Then
    '            If e.Control Then
    '                Select Case e.KeyCode
    '                    Case Keys.B
    '                        If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentCellAddress.X = 2 Or CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentCellAddress.X = 3 Then
    '                            Dim fLMov As New fListaMovimi
    '                            fLMov.SubClase = "VEN,NOC,NCC"
    '                            fLMov.mTercero = IDTERCEROTextBox.Text
    '                            fLMov.mSucursal = SUCURSALTextBox.Text
    '                            fLMov.mSaldo = 0
    '                            If fLMov.ShowDialog = Windows.Forms.DialogResult.OK Then
    '                                CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(2).Value = daConcepto.GetIdSubClase(daTipodoc.GetDocEs(fLMov.mTipoDoc))
    '                                CAR_RECIBOCAJADETALLEFACTURADataGridView.BeginEdit(True)
    '                                asignaLinea(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index)
    '                                CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(3).Value = fLMov.mTipoDoc
    '                                CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(4).Value = fLMov.mNumeroDoc
    '                                daMovi.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, fLMov.mTipoDoc, fLMov.mNumeroDoc)
    '                                If DsMovimiento.MOV_MOVIMIENTO.Rows.Count > 0 Then
    '                                    Dim drMovi As dsMovimiento.MOV_MOVIMIENTORow = DsMovimiento.MOV_MOVIMIENTO.Rows(0)
    '                                    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(5).Value = drMovi("VALORBASE") + drMovi("VALORIVA")
    '                                    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(6).Value = drMovi("SALDO")
    '                                End If
    '                            End If
    '                        End If
    '                End Select
    '            End If
    '        Else
    '            MessageBox.Show("Debe seleccionar un documento", "Documento", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    '        End If
    '    Catch ex As Exception
    '        MessageBox.Show(ex.Message)
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '    End Try

    'End Sub

    Private Sub cargarDatosFactura()
        Try
            Dim fila As Integer = 0
            Dim drMovi As dsMovimiento.MOV_MOVIMIENTORow
            For Each drRec As dsCartera.CAR_RECIBOCAJADETALLEFACTURARow In DsCartera.CAR_RECIBOCAJADETALLEFACTURA.Rows
                If drRec.RowState <> DataRowState.Deleted Then
                    daMovi.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, drRec("IDDOCFACTURA"), drRec("NUMEROFACTURA"))
                    If DsMovimiento.MOV_MOVIMIENTO.Rows.Count > 0 Then
                        drMovi = DsMovimiento.MOV_MOVIMIENTO.Rows(0)
                        If CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows.Count > fila Then
                            CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(fila).Cells("VALORFACTURA").Value = drMovi("VALORBASE") + drMovi("VALORIVA")
                            CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(fila).Cells("SALDO").Value = drMovi("SALDO")
                        End If
                    End If
                End If
                fila += 1
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Function VerificarTotalAbonos() As Boolean
        Dim TotalPagos As Double = 0
        Try
            For Each drCar As dsCartera.CAR_RECIBOCAJADETALLEFACTURARow In DsCartera.CAR_RECIBOCAJADETALLEFACTURA.Rows
                TotalPagos += drCar.VALORPAGO
            Next
            If TotalPagos <= VALORRECIBOTextBox.Text Then
                Return True
            Else
                Return False
            End If
           
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
        
    End Function

    Private Sub TotalizaDoc()
        Dim TotalPagos As Double = 0
        For Each drCar As dsCartera.CAR_RECIBOCAJADETALLEFACTURARow In DsCartera.CAR_RECIBOCAJADETALLEFACTURA.Rows
            If drCar.RowState <> DataRowState.Deleted Then
                If drCar.VALORPAGO Then
                    TotalPagos += drCar.VALORPAGO
                End If
            End If
        Next
        Me.txtTotalPagos.Text = TotalPagos.ToString("c2")
    End Sub
    'Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs)
    '    Try
    '        If e.RowIndex >= 0 AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex) IsNot Nothing AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex).Cells(7).Value IsNot Nothing AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex).Cells(1).Value IsNot DBNull.Value Then
    '            cargarDatosFactura()
    '            TotalizaDoc()
    '        End If

    '    Catch ex As Exception
    '        MessageBox.Show(ex.Message)
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '    End Try
    'End Sub

    Private Sub VALORRECIBOTextBox_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles VALORRECIBOTextBox.Validating
        Try
            If VALORRECIBOTextBox.Text = "" Then
                e.Cancel = True
                'ElseIf Convert.ToDecimal(VALORRECIBOTextBox.Text) < 0 Then
                MessageBox.Show("Debe ingresar un valor mayor de cero", "VALORRECIBO", MessageBoxButtons.OK)
                '    e.Cancel = True
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub BindingNavigatorDeleteItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BindingNavigatorDeleteItem.Click
        Try
            If MessageBox.Show("Esta seguro que desea eliminar este documento", "Elimina Documento", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                CAR_RECIBOSCAJABindingSource.RemoveCurrent()
                lEliminaDoc = True
                SalvaCambios(False)
                MessageBox.Show("Se elimino documento con exito", "Elimino Documento", MessageBoxButtons.OK, MessageBoxIcon.Information)
                lbGlobalcom.cGeneral.ActivaControles(Me.Controls, False)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnBuscaRecibos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBuscaRecibos.Click
        Try
            Dim flRec As New fListaRecibos
            If flRec.ShowDialog = Windows.Forms.DialogResult.OK Then
                lbGlobalcom.cGeneral.ActivaControles(Me.Controls, True)
                If DsCartera.CAR_RECIBOSCAJA.GetChanges IsNot Nothing Or DsCartera.CAR_RECIBOCAJADETALLEFACTURA.GetChanges IsNot Nothing Then
                    If MessageBox.Show("Hay cambios pendientes por salvar, desea salvarlos", "Cambios Pendientes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
                        SalvaCambios(False)
                    End If
                End If
                'Dim cCart As New cRecibos(DsCartera, flRec.pDocumento, flRec.pNumero)
                'cCart.cargarRecibo()
                DsCartera.CAR_RECIBOCAJAMEDIOPAGO.Rows.Clear()
                DsCartera.CAR_RECIBOCAJADETALLEFACTURA.Rows.Clear()
                DsCartera.CAR_RECIBOSCAJA.Rows.Clear()
                daRecibi.FillByIdDocumento(DsCartera.CAR_RECIBOSCAJA, flRec.pDocumento, flRec.pNumero)
                daRecibiDtalle.FillByIdDocumento(DsCartera.CAR_RECIBOCAJADETALLEFACTURA, flRec.pDocumento, flRec.pNumero)
                daRecibiMedioPago.FillByIdDocumentoNumero(DsCartera.CAR_RECIBOCAJAMEDIOPAGO, flRec.pDocumento, flRec.pNumero)
                cargarDatosFactura()
                iTipoDoc = New cTipoDocumento(IDDOCUMENTOTextBox.Text)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    'Private Sub btnBuscaMedio_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
    '    Try
    '        Dim fListMP As New fListaMediosPago
    '        If fListMP.ShowDialog = Windows.Forms.DialogResult.OK Then
    '            IDMEDIOPAGOTextBox.Text = fListMP.IdMedioPag
    '        End If
    '    Catch ex As Exception
    '        MessageBox.Show(ex.Message)
    '        lbGlobalcom.cError.SalvaError(ex, "Henry")
    '    End Try
    'End Sub

    'Private Sub IDMEDIOPAGOTextBox_Validated(ByVal sender As Object, ByVal e As System.EventArgs)
    '    Try
    '        Dim mp As cMediosPago = New cMediosPago(IDMEDIOPAGOTextBox.Text)

    '    Catch ex As Exception
    '        MessageBox.Show(ex.Message)
    '    End Try
    'End Sub

    Private Sub btnElimina_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnElimina.Click
        Try
            If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow IsNot Nothing Then
                CAR_RECIBOCAJADETALLEFACTURABindingSource.RemoveCurrent()
                lEliminaDoc = True
                SalvaCambios(False)
                MessageBox.Show("Registro eliminado con exito", "Elimina", MessageBoxButtons.OK)
                cargarDatosFactura()
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub btnEliminaMedioPago_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEliminaMedioPago.Click
        Try
            If CAR_RECIBOCAJAMEDIOPAGODataGridView.CurrentRow IsNot Nothing Then
                CAR_RECIBOCAJAMEDIOPAGOBindingSource.RemoveCurrent()
                lEliminaDoc = True
                SalvaCambios(False)
                MessageBox.Show("Registro eliminado con exito", "Elimina", MessageBoxButtons.OK)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.CellBeginEdit
        CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex).Cells("NITEM").Value = cGeneral.GetNumeroLinea(CAR_RECIBOCAJADETALLEFACTURADataGridView, e.RowIndex, "NITEM")
    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.CellValidated
        If CAR_RECIBOCAJADETALLEFACTURADataGridView.IsCurrentCellInEditMode Then
            Select Case CAR_RECIBOCAJADETALLEFACTURADataGridView.Columns(e.ColumnIndex).Name
                Case "NUMEROFACTURA"
                    If iTipoDoc.DocEs <> eTipoMovimi.Venta Then
                        'ActualizaDatosProd(e.RowIndex)
                    End If
                Case "VALORPAGO"
                    Dim cRec As cRecibos
                    If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORFACTURA").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDCONCEPTOPAGO").Value = daConcepto.GetIdSubClase(4) Then
                        Dim descuento As Decimal
                        Dim valorAbono As Double = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value
                        cRec = New cRecibos(DsCartera, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOC").Value, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUM").Value)
                        cRec.mIdDocFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOCFACTURA").Value
                        cRec.mNumeroFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUMEROFACTURA").Value
                        CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value + 1
                        descuento = cRec.agregarDescuento(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORFACTURA").Value, 0)
                        asignaLinea(e.RowIndex)
                        CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex + 1).Cells("VALORPAGO").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex + 1).Cells("VALORPAGO").Value - descuento
                    ElseIf CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDCONCEPTOPAGO").Value = daConcepto.GetIdSubClase(12) Then
                        cRec = New cRecibos(DsCartera, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOC").Value, CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUM").Value)
                        cRec.mIdDocFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDDOCFACTURA").Value
                        cRec.mNumeroFactura = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NUMEROFACTURA").Value
                        'CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value = CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("NITEM").Value + 1
                        CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value = cRec.agregarDescuento(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORFACTURA").Value, 1)
                    End If
                    SalvaCambios(False)
            End Select
        End If
    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.CellValidating
        Try
            If CAR_RECIBOCAJADETALLEFACTURADataGridView.IsCurrentCellInEditMode AndAlso e.FormattedValue IsNot Nothing AndAlso e.FormattedValue <> "" Then
                Select Case CAR_RECIBOCAJADETALLEFACTURADataGridView.Columns(e.ColumnIndex).Name
                    Case "VALORPAGO"
                        If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("IDCONCEPTOPAGO").Value = daConcepto.GetIdSubClase(12) Then
                            MessageBox.Show("No se puede modificar el valor del descuento", "Descuento", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                        ElseIf CDbl(e.FormattedValue) > VALORRECIBOTextBox.Text Then
                            MessageBox.Show("valor del abono  supera el valor del recibo", "Abono", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                            e.Cancel = True
                        ElseIf e.FormattedValue > CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("SALDO").Value Then
                            If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value IsNot DBNull.Value Then
                                Dim diferencia As Decimal = e.FormattedValue - CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("VALORPAGO").Value
                                If diferencia > 0 And diferencia > CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Cells("SALDO").Value Then
                                    MessageBox.Show("Valor del abono es mayor que el valor de la factura", "Abono", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                                    e.Cancel = True
                                End If
                            Else
                                MessageBox.Show("Valor del abono es mayor que el valor del saldo", "Saldo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                                e.Cancel = True
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            e.Cancel = True
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.DataError
        MessageBox.Show(e.Exception.Message)
    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.GotFocus
        Dim cVal As New cValidaciones(DsCartera)
        Try
            If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                CAR_RECIBOSCAJABindingSource.EndEdit()
                mensajeValidacion = cVal.validaCartera(iTipoDoc.DocEs)
                If mensajeValidacion <> "" Then
                    IDTIPOPAGOTextBox.Focus()
                    MessageBox.Show(mensajeValidacion, "validaciones", MessageBoxButtons.OK)
                Else
                    If DsCartera.CAR_RECIBOSCAJA.Rows(CAR_RECIBOSCAJABindingSource.Position).RowState = DataRowState.Added Then
                        NUMEROTextBox.Text = lbGlobalcom.Consec.GetNumeroActual(IDDOCUMENTOTextBox.Text, iTipoDoc.DocEs)
                        SalvaCambios(False)
                    End If
                End If
            Else
                IDTIPOPAGOTextBox.Focus()
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Samuel")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.KeyDown
        Try
            If IDDOCUMENTOTextBox.Text <> "" And NUMEROTextBox.Text <> "" Then
                If e.Control Then
                    Select Case e.KeyCode
                        Case Keys.B
                            If CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentCellAddress.X = 2 Or CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentCellAddress.X = 3 Then
                                Dim fLMov As New fListaMovimi
                                fLMov.SubClase = "VEN,NOC,NCC"
                                fLMov.mTercero = IDTERCEROTextBox.Text
                                fLMov.mSucursal = SUCURSALTextBox.Text
                                fLMov.mSaldo = 0
                                If fLMov.ShowDialog = Windows.Forms.DialogResult.OK Then
                                    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(2).Value = daConcepto.GetIdSubClase(daTipodoc.GetDocEs(fLMov.mTipoDoc))
                                    CAR_RECIBOCAJADETALLEFACTURADataGridView.BeginEdit(True)
                                    asignaLinea(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index)
                                    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(3).Value = fLMov.mTipoDoc
                                    CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(4).Value = fLMov.mNumeroDoc
                                    daMovi.FillByIdDocumentoNumero(DsMovimiento.MOV_MOVIMIENTO, fLMov.mTipoDoc, fLMov.mNumeroDoc)
                                    If DsMovimiento.MOV_MOVIMIENTO.Rows.Count > 0 Then
                                        Dim drMovi As dsMovimiento.MOV_MOVIMIENTORow = DsMovimiento.MOV_MOVIMIENTO.Rows(0)
                                        CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(5).Value = drMovi("VALORBASE") + drMovi("VALORIVA")
                                        CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(CAR_RECIBOCAJADETALLEFACTURADataGridView.CurrentRow.Index).Cells(6).Value = drMovi("SALDO")
                                    End If
                                End If
                            End If
                    End Select
                End If
            Else
                MessageBox.Show("Debe seleccionar un documento", "Documento", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try

    End Sub

    Private Sub CAR_RECIBOCAJADETALLEFACTURADataGridView_RowEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles CAR_RECIBOCAJADETALLEFACTURADataGridView.RowEnter
        Try
            If e.RowIndex >= 0 AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex) IsNot Nothing AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex).Cells(7).Value IsNot Nothing AndAlso CAR_RECIBOCAJADETALLEFACTURADataGridView.Rows(e.RowIndex).Cells(1).Value IsNot DBNull.Value Then
                cargarDatosFactura()
                TotalizaDoc()
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message)
            lbGlobalcom.cError.SalvaError(ex, "Henry")
        End Try
    End Sub


    Private Function verificaMediopago(ByVal IdMedioPago) As Boolean
        Try
            For Each drMedioPago As dsCartera.CAR_RECIBOCAJAMEDIOPAGORow In DsCartera.CAR_RECIBOCAJAMEDIOPAGO
                If drMedioPago.IDMEDIOPAGO = IdMedioPago Then
                    Return True
                End If
            Next
            Return False
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Function


    Private Sub CAR_RECIBOCAJAMEDIOPAGODataGridView_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles CAR_RECIBOCAJAMEDIOPAGODataGridView.CellMouseDoubleClick
        Try
            Select Case CAR_RECIBOCAJAMEDIOPAGODataGridView.Columns(e.ColumnIndex).Name
                Case "IDMEDIOPAGO"
                    If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                        Dim fListMP As New fListaMediosPago
                        If fListMP.ShowDialog = Windows.Forms.DialogResult.OK Then
                            If verificaMediopago(fListMP.IdMedioPag) = False Then
                                CAR_RECIBOCAJAMEDIOPAGODataGridView.CurrentRow.Cells("IDMEDIOPAGO").Value = fListMP.IdMedioPag
                            Else
                                MessageBox.Show("El medio de pago ya se Ingreso", "medioPago", MessageBoxButtons.OK)
                            End If
                        End If
                    End If
            End Select
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub CAR_RECIBOCAJAMEDIOPAGODataGridView_CellValidated(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles CAR_RECIBOCAJAMEDIOPAGODataGridView.CellValidated
        If CAR_RECIBOCAJAMEDIOPAGODataGridView.IsCurrentCellInEditMode Then
            Select Case CAR_RECIBOCAJAMEDIOPAGODataGridView.Columns(e.ColumnIndex).Name
                Case "VALORPAGOMEDIO"
                    SalvaCambios(False)
            End Select
        End If
    End Sub

    Private Sub CAR_RECIBOCAJAMEDIOPAGODataGridView_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles CAR_RECIBOCAJAMEDIOPAGODataGridView.CellValidating
        If CAR_RECIBOCAJAMEDIOPAGODataGridView.IsCurrentCellInEditMode And e.FormattedValue IsNot Nothing And e.FormattedValue <> "" Then
            Select Case CAR_RECIBOCAJAMEDIOPAGODataGridView.Columns(e.ColumnIndex).Name
                Case "VALORPAGOMEDIO"
                    If e.FormattedValue < 0 Then
                        MessageBox.Show("Debe Ingresar un valor mayor que cero", "ValorPago", MessageBoxButtons.OK)
                        e.Cancel = True
                    End If

            End Select

        End If
    End Sub

    Private Sub CAR_RECIBOCAJAMEDIOPAGODataGridView_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles CAR_RECIBOCAJAMEDIOPAGODataGridView.GotFocus
        Try
            CAR_RECIBOCAJAMEDIOPAGOBindingSource.EndEdit()
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub

    Private Sub CAR_RECIBOCAJAMEDIOPAGODataGridView_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles CAR_RECIBOCAJAMEDIOPAGODataGridView.KeyDown
        Try
            If e.Control Then
                Select Case e.KeyCode
                    Case Keys.B
                        If CAR_RECIBOCAJAMEDIOPAGODataGridView.CurrentCellAddress.X = 2 Then
                            If IDDOCUMENTOTextBox.Text.Length > 0 And NUMEROTextBox.Text.Length > 0 Then
                                Dim fListMP As New fListaMediosPago
                                If fListMP.ShowDialog = Windows.Forms.DialogResult.OK Then
                                    If verificaMediopago(fListMP.IdMedioPag) = False Then
                                        CAR_RECIBOCAJAMEDIOPAGODataGridView.CurrentRow.Cells("IDMEDIOPAGO").Value = fListMP.IdMedioPag
                                    Else
                                        MessageBox.Show("El medio de pago ya se Ingreso", "medioPago", MessageBoxButtons.OK)
                                    End If
                                End If
                            End If
                        End If
                End Select
            End If
        Catch ex As Exception
            lbGlobalcom.cError.SalvaError(ex, "Henry")
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class